/**
 * Dataflow File Entity Response
 * 数据流文件表实体Res
 */
export interface DataflowFileEntityRes {
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  /**
   * Dataflow ID
   * 数据流id
   */
  dataflowId?: string;
  deleted?: string;
  /**
   * File ID
   * 文件id
   */
  fileId?: string;
  /**
   * File Name
   * 名称
   */
  fileName?: string;
  /**
   * File Path
   * 文件路径
   */
  filePath?: string;
  i18nColumnMap?: { [key: string]: { [key: string]: any } };
  id?: string;
  /**
   * Lifecycle Current Node
   * 生命周期当前节点
   */
  lifecycleCurrentNode?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  optimisticLocker?: number;
  /**
   * Project ID
   * 归属项目id
   */
  projectId?: string;
  /**
   * Description/Remark
   * 描述
   */
  remark?: string;
  /**
   * Data Source: UPLOAD=Local Upload
   * 数据来源  本地上传=UPLOAD
   */
  source?: Source;
  /**
   * Task ID
   * 归属任务id
   */
  taskId?: string;
  tenantId?: string;
  /**
   * File Type: REFERENCE=Reference Material, INPUT_DATA=Input Data, OUTPUT_DATA=Output Data, MID_DATA=Process Data, DELIVERABLE=Deliverable
   * 分类REFERENCE=参考资料,INPUT_DATA=输入数据,OUTPUT_DATA=输出数据,MID_DATA=过程数据,DELIVERABLE=交付物
   */
  type?: Type;
  [property: string]: any;
}

/**
 * Data Source
 * 数据来源  本地上传=UPLOAD
 */
export enum Source {
  External = "EXTERNAL",
  Internal = "INTERNAL",
  Upload = "UPLOAD",
}

/**
 * File Type
 * 分类REFERENCE=参考资料,INPUT_DATA=输入数据,OUTPUT_DATA=输出数据,MID_DATA=过程数据,DELIVERABLE=交付物
 */
export enum Type {
  Deliverable = "DELIVERABLE",
  InputData = "INPUT_DATA",
  MidData = "MID_DATA",
  OutputData = "OUTPUT_DATA",
  Reference = "REFERENCE",
}

/**
 * 归属项目
 *
 * 项目VORes
 */
export interface ProjectVORes {
  /**
   * 实际工期(天)  为空时计算
   */
  actualDurationDay?: number;
  /**
   * 实际结束时间
   */
  actualEndTime?: Date;
  /**
   * 实际开始时间
   */
  actualStartTime?: Date;
  /**
   * 子任务列表
   */
  children?: TaskVORes[];
  /**
   * 编号
   */
  code?: string;
  /**
   * 封面
   */
  cover?: string;
  createTime?: Date;
  creator?: string;
  /**
   * 创建人归属部门
   */
  creatorDept?: { [key: string]: string };
  creatorName?: string;
  /**
   * 创建人
   */
  creatorObject?: ProjectMember;
  /**
   * 负责人
   */
  curator?: string;
  /**
   * 自定义字段
   */
  customFieldList?: CustomFieldMetadata[];
  /**
   * 收藏，为空就是没收藏
   */
  favorite?: FavoriteEntityRes;
  /**
   * 图标
   */
  icon?: string;
  id?: string;
  /**
   * 布局配置id
   */
  layoutConfigId?: string;
  /**
   * 当前节点（迁移,状态节点的成熟度,项目进度)
   */
  lifecycleCurrentNode?: LifecycleNode;
  /**
   * 生命周期模型
   */
  lifecycleModel?: LifecycleModel;
  /**
   * 项目状态=生命周期状态(映射到五个最终状态)
   */
  lifecycleStatus?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  /**
   * 名称
   */
  name?: { [key: string]: string };
  /**
   * 计划工期(天) 为空时计算
   */
  plannedDurationDay?: number;
  /**
   * 计划结束时间
   */
  plannedEndTime?: Date;
  /**
   * 计划开始时间
   */
  plannedStartTime?: Date;
  /**
   * 优先级（待定）
   */
  priority?: number;
  /**
   * 项目进度
   */
  progress?: string;
  /**
   * 项目详情里公告的数据
   */
  projectAnnouncementVoList?: ProjectAnnouncementEntityRes[];
  /**
   * 项目成员
   */
  projectMemberVOList?: ProjectMemberEntityRes[];
  /**
   * 项目详情里里程碑的数据
   */
  projectMilestoneVoList?: MilestoneDataRes[];
  /**
   * 项目详情里的任务方面的数据
   */
  projectTaskVo?: TaskStatisticsVo;
  /**
   * 归属的项目类型id
   */
  projectTypeId?: string;
  /**
   * 项目详情里动态
   */
  projectUpdatesVoList?: ProjectUpdateEntityRes[];
  /**
   * 描述
   */
  remark?: string;
  /**
   * 项目角色json
   */
  roles?: GlobalRoleVo[];
  /**
   * 是否回收、归档NORMAL/DISABLE/ARCHIVED
   */
  status?: DatumStatus;
  /**
   * 任务生命周期模型集合(id:model)
   */
  taskLifecycleModelList?: string[];
  /**
   * 封面 模板id
   */
  templateId?: string;
  tenantId?: string;
  /**
   * 可迁移的规则列表
   */
  transferEdge?: TransferEdge[];
  [property: string]: any;
}

/**
 * 任务VORes
 */
export interface TaskVORes {
  /**
   * 实际工期(天)  为空时计算
   */
  actualDurationDay?: number;
  /**
   * 实际结束时间
   */
  actualEndTime?: Date;
  /**
   * 实际工时
   */
  actualHours?: number;
  /**
   * 实际开始时间
   */
  actualStartTime?: Date;
  /**
   * 子任务列表
   */
  children?: TaskVORes[];
  /**
   * 编号
   */
  code?: string;
  /**
   * 项目详情里评论
   */
  commentVoList?: Comment[];
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  /**
   * 创建人
   */
  creatorObject?: ProjectMember;
  /**
   * 负责人
   */
  curator?: ProjectMember;
  /**
   * 执行人
   */
  executors?: ProjectMember[];
  /**
   * 图标
   */
  icon?: string;
  id?: string;
  /**
   * 剩余工时
   */
  leftHours?: number;
  /**
   * 当前节点（迁移,状态节点的成熟度,项目进度)
   */
  lifecycleCurrentNode?: LifecycleNode;
  /**
   * 项目状态=生命周期状态(映射到五个最终状态)
   */
  lifecycleStatus?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  /**
   * 名称
   */
  name?: { [key: string]: string };
  /**
   * 父任务id
   */
  parentTaskId?: string;
  /**
   * 计划工期(天) 为空时计算
   */
  plannedDurationDay?: number;
  /**
   * 计划结束时间
   */
  plannedEndTime?: Date;
  /**
   * 计划工时
   */
  plannedHours?: number;
  /**
   * 计划开始时间
   */
  plannedStartTime?: Date;
  /**
   * 优先级（待定）
   */
  priority?: number;
  /**
   * 归属项目id
   */
  projectId?: string;
  /**
   * 归属项目
   */
  projectVO?: ProjectVORes;
  /**
   * 描述
   */
  remark?: string;
  /**
   * 软件工具
   */
  software?: string;
  /**
   * 是否回收、归档NORMAL/DISABLE/ARCHIVED
   */
  status?: DatumStatus;
  /**
   * 归属的任务类型id
   */
  taskTypeId?: string;
  /**
   * 归属的任务类型
   */
  taskTypeVO?: TaskTypeVORes;
  /**
   * 任务详情里动态
   */
  taskUpdatesVoList?: ProjectUpdate[];
  tenantId?: string;
  [property: string]: any;
}

/**
 * 创建人
 *
 * 项目成员
 *
 * 负责人
 */
export interface ProjectMember {
  /**
   * 头像
   */
  avatar?: string;
  /**
   * 用户id
   */
  id?: string;
  /**
   * 用户id名
   */
  name?: string;
  [property: string]: any;
}

/**
 * 自定义字段元数据
 */
export interface CustomFieldMetadata {
  /**
   * 是否可修改： 0否，1是
   */
  canModify?: number;
  /**
   * 字段名
   */
  code?: string;
  /**
   * 自定义字段名称
   */
  displayName?: string;
  /**
   * 格式
   */
  format?: string;
  /**
   * 是否显示： 0否，1是
   */
  invisible?: number;
  /**
   * 映射到 columnN
   */
  mapping?: string;
  /**
   * 自定义字段选项
   */
  option?: string;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 是否必填
   */
  required?: boolean;
  /**
   * 排序
   */
  sort?: number;
  /**
   * 数据库字段类型
   */
  type?: string;
  /**
   * 自定义字段类型页面使用
   */
  uiType?: Typex;
  /**
   * 值
   */
  value?: string;
  [property: string]: any;
}

/**
 * 自定义字段类型页面使用
 */
export enum Typex {
  TextLinkRadioAttachmentTextareaSelectSelectMultiRichTextDateDatetime = "text,link,radio,attachment,textarea, select,select_multi,richText,date,datetime",
}

/**
 * 收藏，为空就是没收藏
 *
 * 收藏实体Res
 */
export interface FavoriteEntityRes {
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  i18nColumnMap?: { [key: string]: { [key: string]: any } };
  id?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  /**
   * 项目ID
   */
  projectId?: string;
  /**
   * 任务ID
   */
  taskId?: string;
  tenantId?: string;
  /**
   * 收藏类型，枚举：项目、任务
   */
  type?: Type;
  /**
   * 用户ID
   */
  userId?: string;
  [property: string]: any;
}

/**
 * 收藏类型，枚举：项目、任务
 */
export enum Type {
  Project = "PROJECT",
  ProjectTaskProjectTypeTaskType = "PROJECT,TASK,PROJECT_TYPE,TASK_TYPE",
  ProjectType = "PROJECT_TYPE",
  Task = "TASK",
  TaskType = "TASK_TYPE",
}

/**
 * 当前节点（迁移,状态节点的成熟度,项目进度)
 *
 * 节点
 */
export interface LifecycleNode {
  /**
   * 映射码
   */
  code?: Code;
  /**
   * 颜色
   */
  color?: string;
  /**
   * id
   */
  id?: string;
  /**
   * 审核中
   */
  isAuditing?: boolean;
  /**
   * 多语言名称
   */
  name?: { [key: string]: string };
  /**
   * 成熟度
   */
  progress?: number;
  [property: string]: any;
}

/**
 * 映射码
 */
export enum Code {
  Cancel = "CANCEL",
  Creator = "CREATOR",
  Finish = "FINISH",
  Leader = "LEADER",
  New = "NEW",
  New待开始Processing进行中Finish已完成Cancel已取消Pause已暂停 = "NEW=待开始,PROCESSING=进行中,FINISH=已完成,CANCEL=已取消,PAUSE=已暂停",
  Pause = "PAUSE",
  Processing = "PROCESSING",
  Worker = "WORKER",
}

/**
 * 生命周期模型
 */
export interface LifecycleModel {
  /**
   * 实例归属的数据id
   */
  dataId?: string;
  /**
   * 实例归属的数据类型如项目/任务
   */
  dataType?: DataType;
  /**
   * 迁移线
   */
  edges?: TransferEdge[];
  /**
   * 布局
   */
  layout?: string;
  /**
   * 节点
   */
  nodes?: LifecycleNode[];
  /**
   * 状态卡片
   */
  statusCard?: string;
  [property: string]: any;
}

/**
 * 实例归属的数据类型如项目/任务
 */
export enum DataType {
  DataFlow = "DATA_FLOW",
  Global = "GLOBAL",
  Project = "PROJECT",
  Task = "TASK",
}

/**
 * 迁移线
 */
export interface TransferEdge {
  auditId?: string;
  buttonName?: { [key: string]: string };
  color?: string;
  fromNodeId?: string;
  id?: string;
  name?: { [key: string]: string };
  notification?: PostTransferNotification;
  permissionRule?: PreOperationPermissionRule;
  remark?: string;
  tag?: Tag;
  toNodeId?: string;
  transferRules?: PreTransferRule[];
  updateActions?: InProcessUpdateAction[];
  [property: string]: any;
}

/**
 * 迁移后的通知
 */
export interface PostTransferNotification {
  memberList?: ProjectMember[];
  message?: string;
  roleList?: GlobalRoleVo[];
  [property: string]: any;
}

/**
 * 全局角色VO
 */
export interface GlobalRoleVo {
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  /**
   * 创建人
   */
  creatorObject?: ProjectMember;
  id?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  /**
   * 多语言名称
   */
  name?: { [key: string]: string };
  /**
   * 权限
   */
  permission?: PermissionDefinition;
  /**
   * 描述
   */
  remark?: string;
  tenantId?: string;
  [property: string]: any;
}

/**
 * 权限
 *
 * 权限定义
 */
export interface PermissionDefinition {
  /**
   * 权限点
   */
  pointList?: PointList[];
  /**
   * 权限范围
   */
  scope?: Scope;
  [property: string]: any;
}

export enum PointList {
  ActualHours = "ACTUAL_HOURS",
  ActualTime = "ACTUAL_TIME",
  ChildTask = "CHILD_TASK",
  CreateTask = "CREATE_TASK",
  Curator = "CURATED",
  DeleteTask = "DELETE_TASK",
  Executor = "EXECUTOR",
  ExportTask = "EXPORT_TASK",
  ImportTask = "IMPORT_TASK",
  ManageDataflow = "MANAGE_DATAFLOW",
  PlannedHours = "PLANNED_HOURS",
  PlannedTime = "PLANNED_TIME",
  Priority = "PRIORITY",
  RefTask = "REF_TASK",
  TaskName = "TASK_NAME",
  TaskProgress = "TASK_PROGRESS",
  TaskType = "TASK_TYPE",
  TaskVersion = "TASK_VERSION",
  Transfer = "TRANSFER",
}

/**
 * 权限范围
 */
export enum Scope {
  All = "ALL",
  Assigned = "ASSIGNED",
  None = "NONE",
}

/**
 * ‘之前’可操作人规则
 */
export interface PreOperationPermissionRule {
  businessRole?: BusinessRole[];
  projectRoleId?: string[];
  [property: string]: any;
}

export enum BusinessRole {
  Creator = "CREATOR",
  Curator = "CURATED",
  Worker = "WORKER",
}

export enum Tag {
  TaskTodoPublish = "TASK_TODO_PUBLISH",
}

/**
 * ‘之前’迁移规则
 */
export interface PreTransferRule {
  field?: string;
  operator?: Operator;
  table?: string;
  value?: { [key: string]: any };
  [property: string]: any;
}

export enum Operator {
  Between = "BETWEEN",
  Equal = "EQUAL",
  EqualNotEqualBetweenGreaterThanGreaterThanOrEqualLessThanLessThanOrEqualLikeNotLikeInNotInIsNullIsNotNull = "EQUAL,NOT_EQUAL,BETWEEN,GREATER_THAN,GREATER_THAN_OR_EQUAL,LESS_THAN,LESS_THAN_OR_EQUAL,LIKE,NOT_LIKE,IN,NOT_IN,IS_NULL,IS_NOT_NULL",
  GreaterThan = "GREATER_THAN",
  GreaterThanOrEqual = "GREATER_THAN_OR_EQUAL",
  In = "IN",
  IsNotNull = "IS_NOT_NULL",
  IsNull = "IS_NULL",
  LessThan = "LESS_THAN",
  LessThanOrEqual = "LESS_THAN_OR_EQUAL",
  Like = "LIKE",
  NotEqual = "NOT_EQUAL",
  NotIn = "NOT_IN",
  NotLike = "NOT_LIKE",
}

/**
 * 期间执行的更新动作
 */
export interface InProcessUpdateAction {
  field?: string;
  value?: string;
  [property: string]: any;
}

/**
 * 项目公告实体Res
 */
export interface ProjectAnnouncementEntityRes {
  /**
   * 内容
   */
  content?: string;
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  i18nColumnMap?: { [key: string]: { [key: string]: any } };
  id?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  /**
   * 项目ID
   */
  projectId?: string;
  tenantId?: string;
  [property: string]: any;
}

/**
 * 项目成员实体Res
 */
export interface ProjectMemberEntityRes {
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  i18nColumnMap?: { [key: string]: { [key: string]: any } };
  id?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  /**
   * 项目ID
   */
  projectId?: string;
  /**
   * 角色ID
   */
  roleId?: string;
  /**
   * 任务ID
   */
  taskId?: string;
  tenantId?: string;
  /**
   * 成员用户ID
   */
  userId?: string;
  [property: string]: any;
}

/**
 * 里程碑数据Res
 */
export interface MilestoneDataRes {
  /**
   * 实际工期(天)  为空时计算
   */
  actualDurationDay?: number;
  /**
   * 实际结束时间
   */
  actualEndTime?: Date;
  /**
   * 实际工时
   */
  actualHours?: number;
  /**
   * 实际开始时间
   */
  actualStartTime?: Date;
  /**
   * 编号
   */
  code?: string;
  /**
   * 自定义字段json
   */
  columnDefined?: string;
  /**
   * 评论列表json
   */
  commentJson?: string;
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  /**
   * 负责人 id
   */
  curator?: string;
  deleted?: string;
  i18nColumnMap?: { [key: string]: { [key: string]: any } };
  /**
   * 图标
   */
  icon?: string;
  id?: string;
  /**
   * 是否里程碑
   */
  isMilestone?: string;
  /**
   * 剩余工时
   */
  leftHours?: number;
  /**
   * 当前节点（迁移,状态节点的成熟度,项目进度)
   */
  lifecycleCurrentNodeJson?: string;
  /**
   * 项目状态=生命周期状态(映射到五个最终状态)
   */
  lifecycleStatus?: string;
  /**
   * 里程碑状态
   */
  mileStoneStatus?: MileStoneStatus;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  /**
   * 里程碑状态
   */
  name?: string;
  optimisticLocker?: number;
  /**
   * 父任务id
   */
  parentTaskId?: string;
  /**
   * 计划工期(天) 为空时计算
   */
  plannedDurationDay?: number;
  /**
   * 计划结束时间
   */
  plannedEndTime?: Date;
  /**
   * 计划工时
   */
  plannedHours?: number;
  /**
   * 计划开始时间
   */
  plannedStartTime?: Date;
  /**
   * 优先级（待定）
   */
  priority?: number;
  /**
   * 归属项目id
   */
  projectId?: string;
  /**
   * 描述
   */
  remark?: string;
  /**
   * 软件工具
   */
  software?: string;
  /**
   * 是否回收、归档NORMAL/DISABLE/ARCHIVED
   */
  status?: DatumStatus;
  /**
   * 归属的项目类型id
   */
  taskTypeId?: string;
  tenantId?: string;
  /**
   * 动态
   */
  updates?: string;
  [property: string]: any;
}

/**
 * 里程碑状态
 */
export enum MileStoneStatus {
  Finish = "FINISH",
  NotFinish = "NOT_FINISH",
  Overdue = "OVERDUE",
  Processing = "PROCESSING",
}

/**
 * 是否回收、归档NORMAL/DISABLE/ARCHIVED
 */
export enum DatumStatus {
  Archived = "ARCHIVED",
  Disable = "DISABLE",
  Normal = "NORMAL",
  NormalDisableArchived = "NORMAL,DISABLE,ARCHIVED",
}

/**
 * 项目详情里的任务方面的数据
 *
 * 任务统计VO
 */
export interface TaskStatisticsVo {
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  /**
   * 完成的任务数量（计算完成率）
   */
  finishTaskCount?: number;
  id?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  tenantId?: string;
  /**
   * 本月任务数量
   */
  thisMonthTaskCount?: number;
  [property: string]: any;
}

/**
 * 项目动态实体Res
 */
export interface ProjectUpdateEntityRes {
  /**
   * 业务数据ID
   */
  bizDataId?: string;
  /**
   * 业务类型，枚举：项目、任务等
   */
  bizDataType?: TargetTypeEnum;
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  i18nColumnMap?: { [key: string]: { [key: string]: any } };
  id?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  /**
   * 操作内容
   */
  opContent?: string;
  /**
   * 操作名称，枚举：新建、更新等
   */
  opName?: string;
  /**
   * 项目ID
   */
  projectId?: string;
  tenantId?: string;
  [property: string]: any;
}

/**
 * 业务类型，枚举：项目、任务等
 *
 * 目标类型Enum：项目类型、任务类型
 */
export enum TargetTypeEnum {
  Project = "PROJECT",
  ProjectType = "PROJECT_TYPE",
  Task = "TASK",
  TaskType = "TASK_TYPE",
}

/**
 * 评论
 */
export interface Comment {
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  id?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  tenantId?: string;
  /**
   * 操作描述
   */
  text?: string;
  [property: string]: any;
}

/**
 * 归属的任务类型
 *
 * 任务类型VORes
 */
export interface TaskTypeVORes {
  /**
   * 自定义字段模板
   */
  columnDefined?: ColumnDefinedTemplateEntityRes;
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  /**
   * 创建人
   */
  creatorObject?: ProjectMember;
  id?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  /**
   * 名称
   */
  name?: { [key: string]: string };
  /**
   * 描述
   */
  remark?: string;
  /**
   * 项目来源  EXTERNAL/INTERNAL
   */
  source?: Source;
  /**
   * 是否启用NORMAL/DISABLE
   */
  status?: TaskTypeVOStatus;
  /**
   * 给任务关联的生命周期id
   */
  taskLifecycleId?: string;
  tenantId?: string;
  [property: string]: any;
}

/**
 * 自定义字段模板
 *
 * ColumnDefinedTemplateEntityRes
 */
export interface ColumnDefinedTemplateEntityRes {
  /**
   * 自定义字段的信息，json格式， 有源数据与实体字段 的映射关系
   */
  config?: string;
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  deleted?: string;
  i18nColumnMap?: { [key: string]: { [key: string]: any } };
  id?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  /**
   * 模板名称
   */
  name?: string;
  /**
   * 关联的模板ID
   */
  sourceTemplateId?: string;
  /**
   * 目标数据ID，例如项目类型ID、任务类型ID
   */
  targetDataId?: string;
  /**
   * 目标类型Enum：项目类型、任务类型
   */
  targetType?: TargetTypeEnum;
  tenantId?: string;
  [property: string]: any;
}

/**
 * 是否启用NORMAL/DISABLE
 */
export enum TaskTypeVOStatus {
  Disable = "DISABLE",
  Normal = "NORMAL",
  NormalDisable = "NORMAL,DISABLE",
}

/**
 * 项目动态
 */
export interface ProjectUpdate {
  /**
   * 操作描述
   */
  actionDetail?: { [key: string]: string };
  createTime?: Date;
  creator?: string;
  creatorName?: string;
  id?: string;
  modifier?: string;
  modifierName?: string;
  modifyTime?: Date;
  tenantId?: string;
  [property: string]: any;
}
